package com.qjdchina.sku.front.web.controller;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.qjdchina.common.web.util.RestBody;
import com.qjdchina.commons.result.Result;
import com.qjdchina.sku.biz.SkuProductManager;
import com.qjdchina.sku.converter.SkuProductConverter;
import com.qjdchina.sku.model.RelProductSkuAttribute;
import com.qjdchina.sku.model.SkuProduct;
import com.qjdchina.sku.model.vo.MongoSkuProductVO;
import com.qjdchina.sku.model.vo.SkuItemAttributeVO;
import com.qjdchina.sku.model.vo.SkuProductVO;
import com.qjdchina.sku.service.enums.SkuResultCode;


@Controller
@RequestMapping(value = "data")
public class DataInitController{

    public static final Logger LOGGER = LoggerFactory.getLogger(DataInitController.class);
    @Autowired
    private SkuProductManager skuProductManager;

    /**
     * 初始化mongodb数据
     * shenpingfeng
     * 2017年2月9日
     * @return
     */
    @RequestMapping(value = "init",method = RequestMethod.GET)
    @ResponseBody
    public RestBody<String> init(){
    	 Result<List<SkuProduct>> result = skuProductManager.selectAllProduct();
         List<SkuProduct> skuProducts = result.getDataModel();
         List<SkuProductVO> skuProductVOs = SkuProductConverter.toSkuProductVOs(skuProducts);
         for(SkuProductVO skuProduct:skuProductVOs){
        	MongoSkuProductVO mongoSkuProductVO = SkuProductConverter.toMongoSkuProductVO(skuProduct);
         	Integer productId = mongoSkuProductVO.getProductId();
         	Result<List<RelProductSkuAttribute>> result2 = skuProductManager.selectByProductId(productId);
         	List<RelProductSkuAttribute> relProductAkuAttributes = result2.getDataModel();
         	Map<String, SkuItemAttributeVO> skus = new LinkedHashMap<String, SkuItemAttributeVO>();
         	for(RelProductSkuAttribute rel:relProductAkuAttributes){
         		SkuItemAttributeVO skuItemAttributeVO = new SkuItemAttributeVO();
         		skuItemAttributeVO.setSkuItemId(rel.getSkuItemId());
                 skuItemAttributeVO.setValue(rel.getValue());
                 skus.put(String.valueOf(rel.getSkuItemId()), skuItemAttributeVO);
         	}
         	mongoSkuProductVO.setSkus(skus);
         	skuProductManager.save(mongoSkuProductVO);
         }
		return new RestBody<String>(SkuResultCode.SUCCESS);
    } 
    
}
